1. The Field of the Invention
The present invention relates to the management of files on computer systems. More specifically, the present invention provides a computer implemented method and apparatus for managing the propagation of information among multiple files which are interrelated by various software tools. Thus, the present invention will be of interest in the areas of computer-aided design and computer aided engineering.
2. The Relevant Art
Over the past two decades the use of Computer-Aided Design (CAD) and Computer-Aided Engineering (CAE) software has grown dramatically. These programs allow designers and engineers to create complex structures quickly and efficiently by providing sophisticated simulation, synthesis, validation, and drawing tools in addition to various facilities for organizing data associated with the structures created on the systems. With ever faster computing speeds and ever more capacious data storage devices, the number of applications to which CAD and CAE are being applied has exploded.
As the success of CAD and CAE has grown, so too has the number of files that are generated during projects comprising multiple work sessions. The files are interrelated by the various software tools that are provided by the system. Thus, some files will serve as inputs for certain tools which tools then create output files that are used as inputs for other tools to create a second generation of output files which are then used as inputs for still other tools and so on. For example, the design of complex systems, such as computer chips may require the generation of thousands of interrelated data files. Changes to a single file amongst the large library of files created by the design software requires the propagation of the changes through all of the files depending from the changed file in order to maintain design consistency.
Because the number of files in these situations can literally run on the order of thousands of files, and because the computation time required for processing the large number of files can be long relative to the project timetable, it is clear that propagating changes throughout the files of a project can be an expensive task in terms of computing costs and in terms of the allocation of human resources. This cost is compounded by the fact that in many cases large numbers of files related to a particular project need not be recompiled or reprocessed every time a change is made to one or a few files in the system. For example, changes made to comments within a file often do not require the processing of all of the files in the system; yet, most conventional systems would perform this expensive and unnecessary task.
Thus, it would be advantageous to have a system in which the processing, or propagation, of changes from a file through all of the files that are related to it is performed in an intelligent manner, meaning that the system can determine which changes require propagation and which changes do not. The development of an intelligent system of propagating changes in these systems of interrelated files would greatly improve efficiency in terms of utilization of computing power, as designers and engineers can process only those files which absolutely must be reprocessed in order to maintain confidence that the project is up-to-date and fully consistent.